/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.assembler.output.p44;

import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;

import fr.generali.accueilclient.client.om.IClientParticulier;
import fr.generali.accueilclient.client.om.impl.ClientParticulier;
import fr.generali.refservcommuns.rce.demat.consultpersonneenvcomplet.dossierpersonneenvcomplet.DtoDossierP44;
import fr.generali.refservcommuns.rce.demat.servperscom.pty.personnes.DtoPersonnePhysique;

/**
 * Transforme un {@link DtoDossierP44} en {@link IClientParticulier}
 * 
 * @author selrhazala
 */
@Component("dtoDossierP44ToClientParticulierConverter")
public class DtoDossierP44ToClientParticulierConverter implements Converter<DtoDossierP44, IClientParticulier> {

    /**
     * LOGGER
     */
    private static final Logger LOGGER = LoggerFactory.getLogger(DtoDossierP44ToClientParticulierConverter.class);

    /**
     * {@inheritDoc}
     */
    public IClientParticulier convert(DtoDossierP44 input) {
        LOGGER.debug("assemble");
        IClientParticulier client = new ClientParticulier();
        DtoPersonnePhysique personne = input.getPersonnePhysique();

        if (personne.getDetailSituationFamiliale() != null) {
            client.setSituationFamiliale(personne.getDetailSituationFamiliale().getEtatUnion());
            client.setRegimeMatrimonial(personne.getDetailSituationFamiliale().getStatutMatrimonial());
            if (personne.getDetailSituationFamiliale().getNombreEnfants() != null) {
                client.setNbEnfants(personne.getDetailSituationFamiliale().getNombreEnfants().toString());
            }
        }

        if (personne.getDetailNaissance() != null) {
            client.setLieuNaissance(StringUtils.trimToNull(personne.getDetailNaissance().getLieuNaissance()));
            client.setCpNaissance(StringUtils.trimToNull(personne.getDetailNaissance().getCodePostalNaissance()));
            client.setPaysNaissance(StringUtils.trimToNull(personne.getDetailNaissance().getPaysDeNaissance()));
        }

        client.setNationalite(StringUtils.trimToNull(personne.getNationalite()));
        client.setOrigineClient(StringUtils.trimToNull(personne.getRaisonConnaissanceTiers()));
        client.setTutelle(StringUtils.trimToNull(personne.getGestionTutelleCuratelle()));
        client.setRegimeObligatoire(StringUtils.trimToNull(personne.getCodeTypeAffiliation()));
        // client.setNomProtecteur(StringUtils.trimToNull(personne.getRaisonConnaissanceTiers()));

        if (personne.getRelationClient() != null) {
            client.setTitreCourrier(StringUtils.trimToNull(personne.getRelationClient().getTitreCourrier()));
        }

        if (personne.getDateCreation() != null) {
            client.setDateCreation(personne.getDateCreation().toGregorianCalendar().getTime());
        }

        if (personne.getDateRetraite() != null) {
            client.setFinActivite(personne.getDateRetraite().toGregorianCalendar().getTime());
        }

        if (personne.getSecteurActivite() != null) {
            client.setSecteurActivite(personne.getSecteurActivite().getCode());
        }

        if (personne.isVip() != null) {
            client.setClientVIP(personne.isVip());
        }

        if (personne.isIndicateurCollaborateur() != null) {
            client.setCollaborateurGenerali(personne.isIndicateurCollaborateur());
        }

        if (personne.getCompteEspaceClient() != null && personne.getCompteEspaceClient().length() > 0) {
            client.setCompteEspaceClient(personne.getCompteEspaceClient());
        }

        return client;
    }
}
